﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace ConsoleApplication1
{
    class RobX:Robot
    {
        public RobX()
        {
            this.Tipo = "X";
        }
        
        public override void Pintar(Laberinto lab, List<Bitmap> imagenesTodas)
        {
            Celda celdaAtual = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]];
            int[] colorActual = new int[]{imagenesTodas[- this.Coordenadas[2]].GetPixel(this.Coordenadas[0], this.Coordenadas[1]).R,
                 - imagenesTodas[this.Coordenadas[2]].GetPixel(this.Coordenadas[0], this.Coordenadas[1]).G,
                 - imagenesTodas[this.Coordenadas[2]].GetPixel(this.Coordenadas[0], this.Coordenadas[1]).B};
            celdaAtual.ColoresRespuesta.Add(colorActual);
            if (Salida == "U")
            {

                while (celdaAtual != lab.GoalUp && celdaAtual != null)
                {
                    celdaAtual = celdaAtual.PredecesorUp;
                    celdaAtual.SumColores[0] += colorActual[0];
                    celdaAtual.SumColores[1] += colorActual[1];
                    celdaAtual.SumColores[2] += colorActual[2];
                    celdaAtual.NumColores++;
                    //celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
            else if (Salida == "D")
            {

                while (celdaAtual != lab.GoalDown && celdaAtual != null)
                {
                    celdaAtual = celdaAtual.PredecesorDown;
                    celdaAtual.SumColores[0] += colorActual[0];
                    celdaAtual.SumColores[1] += colorActual[1];
                    celdaAtual.SumColores[2] += colorActual[2];
                    celdaAtual.NumColores++;
                    //celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
            else if (Salida == "L")
            {

                while (celdaAtual != lab.GoalLeft && celdaAtual != null)
                {
                    celdaAtual = celdaAtual.PredecesorLeft;
                    celdaAtual.SumColores[0] += colorActual[0];
                    celdaAtual.SumColores[1] += colorActual[1];
                    celdaAtual.SumColores[2] += colorActual[2];
                    celdaAtual.NumColores++;
                    //celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
            else if (Salida == "R")
            {

                while (celdaAtual != lab.GoalRight && celdaAtual != null)
                {
                    celdaAtual = celdaAtual.PredecesorRight;
                    celdaAtual.SumColores[0] += colorActual[0];
                    celdaAtual.SumColores[1] += colorActual[1];
                    celdaAtual.SumColores[2] += colorActual[2];
                    celdaAtual.NumColores++;
                    //celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
            else if (Salida == "F")
            {

                while (celdaAtual != lab.GoalFront && celdaAtual != null)
                {
                    celdaAtual = celdaAtual.PredecesorFront;
                    celdaAtual.SumColores[0] += colorActual[0];
                    celdaAtual.SumColores[1] += colorActual[1];
                    celdaAtual.SumColores[2] += colorActual[2];
                    celdaAtual.NumColores++;
                    //celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
            else if (Salida == "B")
            {

                while (celdaAtual != lab.GoalBack && celdaAtual != null)
                {
                    celdaAtual = celdaAtual.PredecesorBack;
                    celdaAtual.SumColores[0] += colorActual[0];
                    celdaAtual.SumColores[1] += colorActual[1];
                    celdaAtual.SumColores[2] += colorActual[2];
                    celdaAtual.NumColores++;
                    //celdaAtual.ColoresRespuesta.Add(colorActual);
                }
            }
        }
    }
}
